package org.lanqiao.ssm.common.redis.lua;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import redis.clients.jedis.Jedis;

/**
 * 
 * @Title: RedisTest.java
 * @Package org.lanqiao.ssm.common.redis
 * @Description: TODO(本地jedis 调用lua脚本使用)
 * @author 刘伟 15818570028@163.com
 * @date 2016年10月11日 上午9:29:35
 * @version V1.0
 */
public class RedisLuaTest {
	private static final Log log = LogFactory.getLog(RedisLuaTest.class);

	public static void main(String[] args) {

		Jedis jedis = new Jedis("10.1.10.80", 6379);
		List<String> keys = new ArrayList<>();
		List<String> vals = new ArrayList<>();
		// 测试一 基本测试
		Object eval = jedis.eval("local haoge = redis.call('get','kk') return haoge", keys, vals);
		log.info(eval);

		// 测试二 eval  里面也可以是一个文件
		keys.add("kk");
		Object eval2 = jedis.eval("local tab={}  for i=1,#KEYS do  tab[i] = redis.call('get',KEYS[i]) end return tab",
				keys, vals);
		log.info(eval2);
    	// 测试三 scriptLoad 
		//好处：这样可以缓存到服务器，不用每次把lua脚本的内容传过去
		String lua = "local tab={}  for i=1,#KEYS do  tab[i] = redis.call('get',KEYS[i]) end return tab";
		String scriptLoad = jedis.scriptLoad(lua);
		log.info(scriptLoad);
		Object evalsha = jedis.evalsha(scriptLoad, keys, vals);
		log.info(evalsha);

	}
}
